<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // 数组内置方法:针对数组提供的操作方法

        let names = ["黎昕","明哲","锦程"];
        // "浩","聪健","健雄","思聪","立辉","天翊"
        console.log("原始数组的长度",names.length);

        // 1. 获取数组元素
        console.log( names[1] ); // 通过成员访问运算符 [] 接受下标实现
        console.log( names.at(1) );

        // 2. 新增数组元素 => 影响数组的 length 属性
        //    push 在数组末尾增加新的元素
        names.push("张三");
        names.push("浩","聪健");
        console.log(names);
        console.log(names.length);

        //    unshift 在数组首位增加新的元素 => 影响数组原始元素的下标
        names.unshift("李四")
        names.unshift("健雄","思聪")
        console.log(names);
        console.log(names.length);

        // 3. 删除数组元素 => 影响数组的 length 属性
        //    pop 从数组默认删除元素
        names.pop();
        console.log(names);
        console.log(names.length);
        //    shift 从数组默认删除元素
        names.shift();
        console.log(names);
        console.log(names.length);

        // // 3.1. delete 删除关键字，请求数据 => 所有公司都会要求不允许使用
        // delete names[2];
        // console.log(names);
        // console.log(names.length);

        let nums = [26,16,98,41,93,38,90,41,64,12];
        // 4. 数组元素查询
        //      indexOf()	在数组中搜索元素并返回其位置。
        //      lastIndexOf()	从数组末尾开始搜索元素并返回其位置
        //              如果查询不到，返回 -1
        console.log( "nums.indexOf(98)" , nums.indexOf(98) );
        console.log( "nums.indexOf(98,3)" , nums.indexOf(98,3) );

        console.log( "nums.indexOf(41)" , nums.indexOf(41) );
        console.log( "nums.lastIndexOf(41)" , nums.lastIndexOf(41) );
        
        //      findIndex( callback(currentValue, index, arr){} )	返回数组中通过测试的第一个元素的索引。
        //      findLastIndex( callback(currentValue, index, arr){} )	返回数组中通过测试的最后一个元素的索引。
        //      find( callback(currentValue, index, arr){} )	返回数组中第一个通过测试的元素的值。
        //      findLast( callback(currentValue, index, arr){} )	返回数组中通过测试的最后一个元素的值。
        
        //          callback 参数
        //              currentValue 内置循环时的对应数组元素
        //              index 该元素在数组中的下标
        //              arr 被循环的原始数组
        //          callback 返回值
        //              通过返回true表示符合判断规则，返回false表示不符合判断规则
        //      方法本身的返回值
        //          返回符合条件的数组元素的 下标或者值

        let index1 = nums.findIndex(function(value,i,arr){
            // 设置匹配条件
            // console.log("fintIndex",value,i,arr);
            return value % 2 !== 0;
        });
        console.log(index1);
        
        let index2 = nums.findLastIndex(function(value,i,arr){
            // 设置匹配条件
            return value % 2 !== 0;
        });
        console.log(index2);

        let value1 = nums.find(function(value,i,arr){
            // 设置匹配条件
            return value % 2 !== 0;
        });
        console.log(value1);
        
        let value2 = nums.findLast(function(value,i,arr){
            // 设置匹配条件
            return value % 2 !== 0;
        });
        console.log(value2);
        
    </script>
</head>
<body>
    
</body>
</html>